#ifndef GRAPHOPERATIONEXCEPTION_H_
#define GRAPHOPERATIONEXCEPTION_H_

#include <exception>
#include <string>

#include "graph_support/GraphSupport.h"

namespace GRAPH_SUPPORT_NS
{
namespace exceptions
{

/**
 * It is not template but we want the library to be header-only.
 */
class GraphOperationException : public std::exception
{
public:
	GraphOperationException( const std::string & msg = "<empty msg>" )
		: msg( msg )
	{
		// TODO 3 stack trace here
	}

	virtual ~GraphOperationException() throw()
	{
	}

	const char * getMessage() const
	{
		return msg.c_str();
	}

private:
	std::string msg;
};

}
}

#endif /* GRAPHOPERATIONEXCEPTION_H_ */
